1. Field of the Invention
This invention relates to digital radio communication channels and more specifically to error detection and correction in digital radio communication channels.
2. Description of Related Art
Noise is inherent in radio communication channels. Although this noise may not be much of a problem for analog voice communications systems, it creates problems for digital communications systems. The noise causes bit errors in the transmitted information. In order to combat the noisy channel, and hence reduce bit errors, digital cellular radio systems typically employ both error-detecting and error-correcting circuits.
A common technique for error-detection is the use of cyclic redundancy check (CRC) encoding as described by Andrew S. Tanenbaum in his publication Computer Networks published by Prentice-Hall, Inc., Engelwood Cliffs, N.J. 1981. CRC encoding requires creating a set of parity bits from the information bits desired to be transmitted at the transmitter. These parity bits are then transmitted along with the information bits to a receiver. At the receiver, the parity bits are used with the information bits to determine if a bit error has occurred. By carefully choosing the parity bits, many error patterns in either the information or parity bits are detectable.
For example, a 6-bit CRC can detect any single bit error or any odd number of bit errors in the transmitted stream. All two-bit errors in a message of length less than 31 bits can be detected as well as any single burst error of length less than 6 bits. For a burst error of length 7 bits, 96.9% of the errors are detectable. Thus, for sufficiently long CRC's, we can detect many burst errors.
Error-correction is also employed in digital radio systems. A well-known technique for error-correction uses convolutional codes as described by Andrew Viterbi and Jim Omura in their publication Principles of Digital Communication and Coding published by McGraw-Hill, Inc., New York, N.Y. 1979. In convolutional encoding, information bits are encoded and decoded in such a way as to "guess" bits which were destroyed in transmission. Convolutional codes are typically described by the rate of the code, its constraint length, and the parity equations.
A convolutional code having a rate of k/n, where n-k parity bits are produced for each set of k information bits, and a constraint length of K, can be implemented in a shift register of length K-1 bits. At each interval k information bits are shifted into the register, and n bits containing k information bits and n-k parity bits are produced to be transmitted. The parity bits are combinations (linear algebraic functions) of the contents of the shift register and the most recent input bit. These combinations vary, depending on the convolutional code used.
The transmitted bits are decoded at the receiver. The receiver must have information as to the code being used by the transmitter/encoder in order to decode the information. Convolutional decoding corrects errors by "guessing" the information where a bit error has occurred, based upon its past transmitted bits, since the encoded bits are derived from several adjacent information bits.
The error-correcting code attempts to remove any errors that might have been introduced by the channel. Of course, not all errors are correctable. Thus error-detecting codes are used to determine such situations so that the appropriate actions may be taken.
One technique currently employed in digital cellular radio is to use a convolutional error-correcting code in conjunction with a cyclic redundancy check code for error-detection.